﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
using System.Runtime.Serialization;
using ddcCajamarca.BusinessEntities.Directorio;
using ddcCajamarca.Repository.Directorio.Service;

namespace ddcCajamarca.Repository.Directorio
{
    public class ActividadRepository:MasterRepository,IActividadRepository
    {
        public Actividad GetFromActividadById(int id)
        {
            var query = Context.Database.SqlQuery<Actividad>("dbo.GetActividadById @id=" + id).SingleOrDefault();

            return query;
        }

        public IEnumerable<Actividad> GetAllActividad()
        {
            var query = Context.Database.SqlQuery<Actividad>("dbo.GetAllActividad").ToList();

            return query;
        }

        public IEnumerable<Actividad> GetActividadesByCriterio(string criterio)
        {
            IEnumerable<Actividad> query;

            if (String.IsNullOrEmpty(criterio))
            {
                query = Context.Database.SqlQuery<Actividad>("dbo.GetAllActividad").ToList();
            }
            else
            {
                query = Context.Database.SqlQuery<Actividad>("dbo.GetActividadesByCriterio @criterio = '" + criterio + "'").ToList();
            }

            return query;
        }

        public void AddActividad(Actividad actividad)
        {
            Context.Database.ExecuteSqlCommand("dbo.NewActividad @id= '"
                + actividad.Id + "', @nombre = '"
                + actividad.Nombre + "', @comentario = '"
                + actividad.Comentario + "'");
        }

        public void UpdateActividad(Actividad actividad)
        {
            Context.Database.ExecuteSqlCommand("dbo.NewActividad @id= '"
                + actividad.Id + "', @nombre = '"
                + actividad.Nombre + "', @comentario = '"
                + actividad.Comentario + "'");
        }

        public void DeleteActividad(int id)
        {
            var existe = Context.Database.SqlQuery<Actividad>("dbo.GetActividadById @id=" + id).SingleOrDefault();

            if (existe != null)
            {
                Context.Database.ExecuteSqlCommand("dbo.deleteActividad @id = '" + id + "'");
            }
        }        
    }
}
